# coding=utf8
import itchat
from tuling import get_response

free = False
group = ''

personOpen = False  # 暂时一次只针对一个人发消息
myself = '' # 开启时候记录自己当前的用户名
toUser = ''  # 对谁开放机器人


# 个人消息回复
@itchat.msg_register('Text')
def text_reply(msg):
    fromUserName = msg['FromUserName']
    toUserName = msg['ToUserName']
    content = msg['Content']  # 获取消息
    global personOpen, myself, toUser

    if toUserName == 'filehelper':
        if content == u'大圣要走啦':  # 退出当前账号
            print u'退出'
            itchat.send(u'大圣走也~~~~~~~', toUserName='filehelper')
            itchat.logout()
        elif content == u'变身机器人':
            personOpen = True
            myself = fromUserName
            itchat.send(u'变身机器人啦~~~~~~~', toUserName='filehelper')
        elif content == u'退出机器人':
            personOpen = False
            toUser = ''
            itchat.send(u'退出机器人啦~~~~~', toUserName='filehelper')
    elif content == u'变身机器人':  # 变身机器人
        if myself != toUserName:
            toUser = toUserName
            itchat.send(u'本宝宝已经变成机器人了，你可以随便问什么，我都回答你~_~', toUser)
    else:
        print 'personOpen : ', personOpen
        if personOpen:  # 开启机器人
            if fromUserName == toUser:  # 是否为开启的聊天对象
                itchat.send(get_response(msg['Text']) or u'听不懂唉......', toUser)

# 群消息回复
@itchat.msg_register('Text', isGroupChat=True)
def group_reply(msg):
    groupName = msg['User']['UserName']  # 获取群名称
    content = msg['Content'] # 获取消息
    global free, group  # 控制是否开启自动模式
    if content == u'大圣变身':  # 激活口令
        free = False
        if msg['FromUserName'] != groupName: # 限制只能自己才能控制变身
            print u'变身'  # log
            group = groupName  # 存储当前群名称
            itchat.send( u'变身！！！现在我已经是机器人了，at 我，跟我聊天吧。（不要试图自己喊变身口号，只有主人才能让我变身。）', group[0])
    elif content == u'大圣变身自由模式':  # 自由模式激活口令
        free = True
        if msg['FromUserName'] != groupName:  # 限制只能自己才能控制变身
            print u'变身，自由模式'  # log
            group = groupName  # 存储当前群名称
            itchat.send( u'变身！！！现在我已经是机器人了，发任意消息，跟我聊天吧。（不要试图自己喊变身口号，只有主人才能让我变身。）', group[0])
    elif content == u'关闭自由模式':  # 关闭自由模式
        if free:
            free = False
            if msg['FromUserName'] != groupName:  # 限制只能自己才能控制变身
                print u'变身'  # log
                group = groupName  # 存储当前群名称
                itchat.send(u'变身！！！现在我已经是机器人了，at 我，跟我聊天吧。（不要试图自己喊变身口号，只有主人才能让我变身。）', group[0])
        else:
            return u'@%s\u2005%s' % (msg['ActualNickName'],u'还没有被激活，怎么被关闭，惆怅啊。。。。')
    else:  # 普通群消息
        if groupName == group:  # 必须当前群才能说话
            print free
            if free:  # 是否为自由模式
                print u'收到群：', group, u'消息'
                itchat.send(get_response(msg['Text']), group)
            else:
                print msg['isAt']
                if msg['isAt']:  # 如果 at 我了
                    print u'收到群：', group, u'消息'
                    itchat.send(get_response(msg['Text']), group)

itchat.auto_login()
itchat.run()
